e31f2d5df6e52758d61934d7e34420f77ef84d7b,Source/com/drew/imaging/png/PngMetadataReader.java,PngMetadataReader,processChunk,#Metadata#PngChunk#,97
Before Change
metadata.addDirectory(directory);
} else if (chunkType.equals(PngChunkType.iCCP)) {
SequentialReader reader = new SequentialByteArrayReader(bytes);
String profileName = reader.getNullTerminatedString(79);
PngDirectory directory = new PngDirectory(PngChunkType.iCCP);
directory.setString(PngDirectory.TAG_ICC_PROFILE_NAME, profileName);
byte compressionMethod = reader.getInt8();
if (compressionMethod == 0) {
// Only compression method allowed by the spec is zero: deflate
// This assumes 1-byte-per-char, which it is by spec.
int bytesLeft = bytes.length - profileName.length() - 2;
byte[] compressedProfile = reader.getBytes(bytesLeft);
InflaterInputStream inflateStream = new InflaterInputStream(new ByteArrayInputStream(compressedProfile));
new IccReader().extract(new RandomAccessStreamReader(inflateStream), metadata, directory);
After Change
metadata.addDirectory(directory);
} else if (chunkType.equals(PngChunkType.iTXt)) {
SequentialReader reader = new SequentialByteArrayReader(bytes);
byte[] keywordBytes = reader.getNullTerminatedBytes(79);
byte compressionFlag = reader.getInt8();
byte compressionMethod = reader.getInt8();
// TODO we currently ignore languageTagBytes and translatedKeywordBytes
byte[] languageTagBytes = reader.getNullTerminatedBytes(bytes.length);
byte[] translatedKeywordBytes = reader.getNullTerminatedBytes(bytes.length);
int bytesLeft = bytes.length - keywordBytes.length - 1 - 1 - 1 - languageTagBytes.length - 1 - translatedKeywordBytes.length - 1;
byte[] textBytes = null;
if (compressionFlag == 0) {
textBytes = reader.getNullTerminatedBytes(bytesLeft);